package com.condominio.control;

import java.util.ArrayList;
import java.util.List;

import com.condominio.dao.PessoaDao;
import com.condominio.model.Pessoa;

public class PessoaControl {

	PessoaDao pDao=new PessoaDao();

	public Pessoa login(Pessoa p){
		pDao.begin();
		Pessoa pe=new Pessoa();
		pe=pDao.findPessoaByLoginAndSenha(p);
		pDao.close();
		if(pe==null)
			return null;
		return pe;
	}

	public boolean logout(){
		return false;
	}
	public boolean cadastrarPessoa(Pessoa p){
		try {
			Pessoa pe = pDao.findPessoaByAP(p);

			if(pe==null){

				pDao.begin();
				pDao.persist(p);
				pDao.commit();
				return true;
			}
			else
				return false;
		}
		catch(Exception e) {
			e.printStackTrace();
			return false;
		}
		finally {
			pDao.close();
		}
	}


	public boolean atualizarPessoa(Pessoa p){
		try {
			pDao.begin();
			pDao.merge(p);
			pDao.commit();
			return true;
		} catch (Exception e) {
			return false;
		}
		finally{
			pDao.close();
		}
	}


	public List<Pessoa> findAllPessoa(){
		List<Pessoa> pessoas=pDao.findAllPessoas();
		return pessoas;
	}

	public Pessoa findPessoaById(Pessoa p) {
		try {
			Pessoa pe=pDao.find(p.getId());
			return pe;
		}catch (Exception e) {
			return null;
		}
		finally{
			pDao.close();
		}
	}

	public Pessoa findPessoaByLoginAndSenha(Pessoa p){
		try {
			Pessoa pe=pDao.findPessoaByLoginAndSenha(p);
			return pe;
		}catch (Exception e) {
			return null;
		}
		finally{
			pDao.close();
		}
	}

	public Pessoa findPessoaByAP(Pessoa p){
		try {
			Pessoa pe=pDao.findPessoaByAP(p);
			return pe;
		}catch (Exception e) {
			return null;
		}
		finally{
			pDao.close();
		}
	}



	public boolean excluirPessoa(Pessoa p) {

		try {
			pDao.begin();
			Pessoa pe = new Pessoa();
			pe = (Pessoa)pDao.findPessoaByAP(p);

			if(pe==null) {
				return false;
			}
			else{
				pDao.remove(pe);
				pDao.flush();
				pDao.commit();
				return true;
			}
		}
		catch(Exception e) {

			return false;
		}
		finally {
			pDao.close();
		}


	}
}
